package com.pharmcube.xjy.swagger;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 用于描述返回值的结构。 {@link #ref}与{@link #properties}字段不可以同时使用，否则以ref为准
 *
 * @author
 * @Description:
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiResponseObject {

    String name() default "";

    String description() default "";

    /**
     * 描述返回值中各个字段的结构 </br>
     * NOTICE: 当与{@link #ref}同时存在时，本字段不生效
     */
    ApiResponseProperty[] properties() default {};

    /**
     * 当返回的对象是已经定义好的结构时，可直接通过本字段引用，值取{@link ApiResponsePropertyRef#value} </br>
     * NOTICE: 本字段会覆盖{@link #properties}字段中定义的结构
     */
    String ref() default "";
}
